 function validaCNPJ(cnpj){
    cnpj = jQuery.trim(cnpj);// retira espaços em branco
    // DEIXA APENAS OS NÚMEROS
    cnpj = cnpj.replace('/','');
    cnpj = cnpj.replace('.','');
    cnpj = cnpj.replace('.','');
    cnpj = cnpj.replace('-','');

    var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
    digitos_iguais = 1;

    if (cnpj.length < 14 && cnpj.length < 15){
        return false;
    }
    for (i = 0; i < cnpj.length - 1; i++){
        if (cnpj.charAt(i) != cnpj.charAt(i + 1)){
            digitos_iguais = 0;
            break;
        }
    }

    if (!digitos_iguais){
        tamanho = cnpj.length - 2
        numeros = cnpj.substring(0,tamanho);
        digitos = cnpj.substring(tamanho);
        soma = 0;
        pos = tamanho - 7;

        for (i = tamanho; i >= 1; i--){
            soma += numeros.charAt(tamanho - i) * pos--;
            if (pos < 2){
                pos = 9;
            }
        }
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(0)){
            return false;
        }
        tamanho = tamanho + 1;
        numeros = cnpj.substring(0,tamanho);
        soma = 0;
        pos = tamanho - 7;
        for (i = tamanho; i >= 1; i--){
            soma += numeros.charAt(tamanho - i) * pos--;
            if (pos < 2){
                pos = 9;
            }
        }
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(1)){
            return false;
        }
        return true;
    }else{
        return false;
    }
};

//Funções de formatação de campo 
$(document).ready(function() {

    $('form').attr('class', 'formee');   

    $('ul#nav-menu > li > a').click(function() {
        $(this).next().slideToggle();
    });

    $('.tbLista tbody tr:odd').addClass('par');
    // $('#tbLista tbody tr:odd').addClass('impar');
    $('.tbAtualizarMetas tbody tr:odd').addClass('par');

    $('.campoData').datepicker({
        changeMonth: true,
        changeYear: true,
        numberOfMonths: 1,
        dateFormat: 'dd/mm/yy',
        dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sab'],
        monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
        monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez'],
        regional: "pt-BR"
    }).keypress(function() {
        mascaraPrincipal(this, mascaraData);
    }).attr('maxlength', '10');

    // correcao do cmbo de ano e mes do datepicker
    $('.ui-datepicker-year').css('float', 'none');

    $(".campoAlfa").keypress(function() {
        //mascaraPrincipal(this, maiusculas);
    }).blur(function() {
        //mascaraPrincipal(this, maiusculas);
    });

    $(".campoNumerico").keypress(function() {
        mascaraPrincipal(this, validaEntradaSomenteNumero);
    });

    $(".campoMeta").keypress(function() {
        mascaraPrincipal(this, validaEntradaSomenteNumero);
    });

    $(".campoMetaModalidade").keypress(function() {
        mascaraPrincipal(this, validaEntradaSomenteNumero);
    });

    $(".campoMonetario").keypress(function(event) {
        reais(this, event, document);
    }).keydown(function(event) {
        backspace(this, event, document);
    });

    $(".campoHora").keypress(function() {
        mascaraPrincipal(this, mascaraHora);
    }).attr('maxlength',5)
    .blur(function(){
        if(this.value.length < 5){this.value = ''}
    });

    $(".campoTelefone").keypress(function() {
        mascaraPrincipal(this, telefone_simples);
    }).attr('maxlength', '10')
    .blur(function(){
        //if(this.value.length < 10){ this.value = ''}
    });

    $(".campoCPF").keypress(function() {
        mascaraPrincipal(this, cpf);
    }).blur(function(){
        if($(this).val() !== ''){
            if(!$(this).validateCPF()){
                alert('Digite um número de CPF válido.');
                $(this).val('').focus();            
            }
        }
    }).attr('maxlength', '14')
    .blur(function(){
        if(this.value.length < 14){this.value = ''}
    });

    $(".campoCNPJ").keypress(function() {
        mascaraPrincipal(this, cnpj);
    }).attr('maxlength',18)
    .blur(function(){
        if(this.value != ''){
            if(!validaCNPJ(this.value)){
                alert('Informe um CNPJ válido.');
                this.value = '';
            }
        }
    });

    $(".campoCEP").keypress(function() {
        mascaraPrincipal(this, cep);
    }).attr('maxlength',10)
    .blur(function(){
        if(this.value.length < 10){this.value = ''}
    });

    $(".campoOS").keypress(function() {
        mascaraPrincipal(this, mascaraOS);
    }).attr('maxlength',15)
    .blur(function(){
        if(this.value.length < 15){this.value = ''}
    });

    $('#btnCancelar').click(function() {
        $(location).attr('href', '/projovem?cmd=cancelar');
    });

    var fonte = 10;
    $('#aumenta_fonte').click(function() {
        fonte = 14;
        $('body').css({
            'font-size': fonte + 'px'
        });
    });

    $('#reduz_fonte').click(function() {
        fonte = 8;
        $('body').css({
            'font-size': fonte + 'px'
        });
    });

    $('#restaurar_fonte').click(function() {
        fonte = 10;
        $('body').css({
            'font-size': fonte + 'px'
        });
    });

    $('#formulario').attr('onsubmit', 'javascript:aguarde();');

    //Tabs
    $( "#tabs" ).tabs();

    //Multi select
    $(".multiselect").multiselect({sortable: true, searchable: false});

    //DataTable
    $('.dataTable').dataTable({
        "bPaginate": true,
        "bLengthChange": false,
        "iDisplayLength" : 10,
        "bFilter": false,
        "bSort": false,
        "bInfo": true,
        "bAutoWidth": false,
        "sPaginationType": "full_numbers",
        "oLanguage" : {
                        "oPaginate" : {
                                        "sFirst": " Primeito ",
                                        "sLast": " Ultimo ",
                                        "sNext" : " Proximo ",
                                        "sPrevious" : " Anterior "
                                       },
                        "sInfo": "Exibindo _START_ até _END_ de _TOTAL_ registros",
                        "sInfoEmpty": "Exibindo 0 até 0 de 0 registros",
                        "sProcessing": "Processando...",
                        "sEmptyTable" : "Nenhum registro encontrado"
        }        
    });   

    //MultiFIle  Upload
    $(".multi-pt").MultiFile({
        /* max:3,*/
        STRING : {
            accept:'gif|jpg|txt|doc|docx|xls|xlsx|pdf|csv|ppt|png|bmp',
            list : "#divListArq",
            remove : "&nbsp;&nbsp;&nbsp; Remover",
            selected : "Selecionado: $file",
            denied : "Inválido arquivo de tipo $ext!",
            duplicate : "Arquivo já selecionado:\n$file!"
        }
    });
});

//Initialize Arrow Side Menu:
ddaccordion.init({
    headerclass: "menuheaders", //Shared CSS class name of headers group
    contentclass: "menucontents", //Shared CSS class name of contents group
    revealtype: "clickgo", //Reveal content when user clicks or onmouseover the header? Valid value: "click", or "mouseover"
    mouseoverdelay: 200, //if revealtype="mouseover", set delay in milliseconds before header expands onMouseover
    collapseprev: false, //Collapse previous content (so only one open at any time)? true/false
    defaultexpanded: [0], //index of content(s) open by default [index1, index2, etc]. [] denotes no content.
    onemustopen: false, //Specify whether at least one header should be open always (so never all headers closed)
    animatedefault: false, //Should contents open by default be animated into view?
    persiststate: true, //persist state of opened contents within browser session?
    toggleclass: ["unselected", "selected"], //Two CSS classes to be applied to the header when it's collapsed and expanded, respectively ["class1", "class2"]
    togglehtml: ["none", "", ""], //Additional HTML added to the header when it's collapsed and expanded, respectively  ["position", "html1", "html2"] (see docs)
    animatespeed: 500, //speed of animation: integer in milliseconds (ie: 200), or keywords "fast", "normal", or "slow"
    oninit: function(expandedindices) { //custom code to run when headers have initalized
        //do nothing
    },
    onopenclose: function(header, index, state, isuseractivated) { //custom code to run whenever a header is opened or closed
        //do nothing
    }
});

function enviarAjax(idForm, action, idMensagem, idModal) {

    $('#' + action).click(function() {

        $('#waiting').fadeIn(500);
        $('#message').hide(0);

        $.ajax({
            type: 'POST',
            url: action,
            dataType: 'json',
            data: $('form#' + idForm).serialize(),
            success: function(data) {
                $('#waiting').fadeOut(500);
                $('#message').removeClass().addClass((data.error === true) ? 'error' : 'success').text(data.msg).show(500);
                if (data.error === true) {
                } else {

                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                $('#waiting').fadeOut(500);
                $('#message').removeClass().addClass('error').text('There was an error.').show(500);
            }
        });

        return false;
    });

}